package zhuzx.scheduler;

import java.util.List;

/**
 * 任务容器基类，具体的任务必须通过继承该类，再将其实例提交给任务调用器。<br>
 * 使用容器，主要是为了让任务主体方便使用不同的参数运行，乃至可以根据参数切换任务逻辑。
 * @author	zhuzx	2016年1月8日
 */
public abstract class TaskContainer implements Runnable {
	/**
	 * 任务序列号，用来索引任务容器中的任务参数
	 */
	protected int taskSerial;
	/**
	 * 任务容器，用来装载任务参数
	 */
	protected List<?> container = initContainer();
	
	public TaskContainer(int taskSerial) {
		this.taskSerial = taskSerial;
	}
	
	/**
	 * 填充容器的方法，需要子类实现
	 */
	public abstract List<?> initContainer();
	
	/**
	 * 具体的任务逻辑，根据容器中的任务参数执行，需要子类实现
	 */
	public abstract void run();

}
